package com.banyuan.lesson.集合.Colleection.list;

import com.sun.security.jgss.GSSUtil;

//List不仅有序而且还可以重复（equals）；
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ArrayListDemo1 {
    public static void main(String[] args) {
        List<Student> list = new ArrayList<>();
        list.add(new Student("aaa",1,'m'));
        list.add(new Student("bbb",1,'f'));
        list.add(new Student("ccc",1,'f'));
        list.add(new Student("ddd",1,'m'));
        list.add(new Student("eee",1,'f'));
        list.add(new Student("fff",1,'f'));
        list.add(new Student("ggg",1,'m'));
        System.out.println(list);

        //插入到容器的第三个位置，效率低，不建议大量使用；
//        list.add(2,new Student("www",19,'f'));
//        System.out.println(list);

        //将一个容器中的所有的元素加到另一个容器的尾部；
        List<Student> list2 = new ArrayList<>();
        list2.addAll(list);
        System.out.println(list2);

        //加到尾部，尽量少用这个；
        list2.addAll(0,list);

        //claer清空所有的元素；

        //contains判断有没有某个元素；
        //用这个方法志强需要重写元素的equals方法；
        boolean b = list.contains(new Student("aaa",1,'m'));
        System.out.println(b);

        //indexof判断某个元素在list中的位置，没有就返回-1；
        int index = list.indexOf(new Student("aaa",1,'m'));
        System.out.println(index);

        //remove删除list中的某个元素，可以按index来删，或者按照对象equals删；


        //removeIf动态删除，需要使用兰博大表达式；

        //set修改,很难精确定位，因为位置很难定；
        list.set(2, new Student("qqq",21,'f'));

        //转成数组；
        Student[] arrSru = list.toArray(new Student[0]);

        //数组转成list
        List<Student> list3 = Arrays.asList(arrSru);
        //转换成一个只读版的list,使用增加的方法会报错；
        list3.add(new Student("qqq",21,'f'));

        //List.of也是一个只读版的list
        List list4 = List.of(new Student("qqq",21,'f'),new Student("qqq",21,'f'));
//        list4.addAll(new Student("qqq",21,'f'));
    }

    //list的排序，用sort方法，首先要实现compareTo的接口（在Student类中实现），定义用什么属性来排序；

    //复杂规则排序用兰博大表达式；
}
